Estoy tratando de crear una acción de registro usando axios. Cuando envío, aparece el error Solicitud fallida con el código de estado 400. No sé qué estoy haciendo mal. Alguien puede ayudar
Este es mi código de acción:
export const userRegister = ( firstName, lastName, phone, email, password, role, username ) => { return async (dispatch) => { const config = { headers: { 'Content-Type': 'application/json', }, } try { const res = await axios.post( `http://localhost:8000/api/v1/register`, { firstName, lastName, phone, email, password, role, username }, config ) console.log(res) // localStorage.setItem('token', res.data.token) dispatch({ type: REGISTER_SUCCESS, payload: { successMessage: res.data.message, token: res.data.token, }, }) } catch (error) { console.log(error.response) dispatch({ type: REGISTER_FAIL, payload: { error: error.response.data, }, }) } } }me sale el error
Error: Request failed with status code 400 at createError (createError.js:16:1)Mi código de registro es este:
const handleSubmit = async (e) => { e.preventDefault() dispatch( userRegister( firstName, lastName, phone, email, password, role, username ) }¿Qué estoy haciendo mal?
Lo que te sugiero que eches un vistazo es lo siguiente:
¿Cómo espera la API que se entreguen los datos?
Comúnmente, es Form Data o JSON body . Por lo que entiendo aquí, debe enviar el cuerpo de la solicitud en formato JSON , no en Datos de formulario. Tal malentendido a menudo conduce al error 400 Bad Request , por lo que lo más probable es que envíe los datos de manera incorrecta a la API.
Puede ser que puedas intentar:
const res = await axios.post( `http://localhost:8000/api/v1/register`, { firstName: firstName, lastName: lastName, ... }, config )*/ Esta es una forma más limpia de enviar un cuerpo JSON
Referencia: https://masteringjs.io/tutorials/axios/post
Si la API necesita procesar los datos del formulario, cambie la propiedad de configuración de application/json a Content-Type:'multipart/form-data' y envíe los datos del formulario utilizando el new FormData()